<?php

//遍历


$dir = '/Library/WebServer/Documents/flask/2019-05-05-17-46-56';

$url = $_SERVER['QUERY_STRING'];
$url = explode('=', $url);
$dir = $url[1];
$dir_1 = substr($dir, -19);
$dir_2 = substr($dir, 0, strlen($dir) - 20);
// print_r($dir_1.$dir_2);exit;

function fileAllName($dir){
	$files = [];
	//检测是否是文件
	if(is_dir($dir)){
		//打开目录
		if($handle = opendir($dir)){
			//返回当前文件的条目
			while(($file = readdir($handle)) !== false){
				// 去除特殊目录
				if($file != '.' && $file != '..'){
					//判断子目录是否还存在目录
					if(!is_dir($dir.'/'.$file)){
						$files[] = $dir.'/'.$file;
					}
				}
			}
		}
	}
	return $files;
}

// print_r(fileAllName($dir));	


$files = fileAllName($dir);
$zipname = $dir_2.'/'.$dir_1.'.zip';
$zip = new \ZipArchive();
$res = $zip->open($zipname, \ZipArchive::CREATE | \ZipArchive::OVERWRITE);
if ($res === TRUE) {
    foreach ($files as $file) {
	 	//这里直接用原文件的名字进行打包，也可以直接命名，需要注意如果文件名字一样会导致后面文件覆盖前面的文件，所以建议重新命名
	    $new_filename = substr($file, strrpos($file, '/') + 1);
	    $zip->addFile($file, $new_filename);
    }
    $zip->close();
}


header("Cache-Control: public"); 
header("Content-Description: File Transfer"); 
header('Content-disposition: attachment; filename='.basename($zipname)); //文件名  
header("Content-Type: application/zip"); //zip格式的  
header("Content-Transfer-Encoding: binary"); //告诉浏览器，这是二进制文件  
header('Content-Length: '. filesize($zipname)); //告诉浏览器，文件大小  
@readfile($zipname);
@unlink($zipname);



















